import 'package:enjoy_pro_max/utils/eventbus.dart';
import 'package:enjoy_pro_max/utils/http.dart';
import 'package:enjoy_pro_max/utils/toast.dart';
import 'package:enjoy_pro_max/utils/token.dart';

import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';

class MinePage extends StatefulWidget {
  const MinePage({super.key, required this.currentIndex});
  final int currentIndex;

  @override
  State<MinePage> createState() => _MinePageState();
}

class _MinePageState extends State<MinePage> {
  // 用户数据
  Map userInfo = {
    'id': null,
    'avatar': null,
    'nickName': null,
  };
  _getUserInfo() async {
    if (TokenManager().getToken() != null) {
      final res = await http.get('/userInfo');
      setState(() {
        userInfo = res['data'];
      });
    }
  }

  @override
  void initState() {
    super.initState();
    eventBus.on<RefreshMineEvent>().listen((event) {
      _getUserInfo();
    });
  }

  // 菜单数据
  final List menuList = [
    {
      "title": "我的房屋",
      "icon": "assets/images/house_profile_icon@2x.png",
    },
    {
      "title": "我的报修",
      "icon": "assets/images/repair_profile_icon@2x.png",
    },
    {
      "title": "访客记录",
      "icon": "assets/images/visitor_profile_icon@2x.png",
    }
  ];
  @override
  void didUpdateWidget(covariant MinePage oldWidget) {
    super.didUpdateWidget(oldWidget);
    if (widget.currentIndex == 1) {
      _getUserInfo();
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: const Color.fromARGB(200, 85, 145, 175),
      appBar: AppBar(
        title: const Text('我的', style: TextStyle(color: Colors.white)),
        backgroundColor: Colors.transparent,
        centerTitle: true,
      ),
      body: ListView(
        children: [
          // 个人信息
          Container(
              padding: const EdgeInsets.all(10),
              child: GestureDetector(
                  onTap: () {
                    Navigator.pushNamed(context, '/profile');
                  },
                  child: Row(children: [
                    Row(children: [
                      ClipRRect(
                        borderRadius: BorderRadius.circular(50.0),
                        child: userInfo['avatar'] != null
                            ? Image.network(userInfo['avatar'],
                                width: 50, height: 50)
                            : Image.asset('assets/images/avatar_1.jpg',
                                width: 50, height: 50),
                      ),
                      const SizedBox(width: 10),
                      userInfo['nickName'] != null
                          ? Text(userInfo['nickName'],
                              style: const TextStyle(
                                  fontSize: 16, color: Colors.white))
                          : const Text('用户名',
                              style:
                                  TextStyle(fontSize: 16, color: Colors.white))
                    ]),
                    const Spacer(),
                    Row(children: [
                      GestureDetector(
                        onTap: () {
                          Navigator.pushNamed(context, '/profile',
                              arguments: userInfo);
                        },
                        child: const Text(
                          '去完善信息',
                          style: TextStyle(color: Colors.white),
                        ),
                      ),
                      const Icon(
                        Icons.arrow_forward_ios,
                        color: Colors.white,
                        size: 13,
                      )
                    ])
                  ]))),
          Container(
              padding: const EdgeInsets.all(15),
              margin: const EdgeInsets.only(
                  top: 20, left: 10, right: 10, bottom: 20),
              decoration: BoxDecoration(
                  color: Colors.white, borderRadius: BorderRadius.circular(10)),
              child: Column(
                  children: menuList.map((item) {
                return SizedBox(
                    height: 50,
                    child: Row(children: [
                      Row(
                        children: [
                          Image.asset(
                            item['icon'],
                            width: 20,
                            height: 20,
                          ),
                          const SizedBox(
                            width: 10,
                          ),
                          Text(
                            item['title'],
                            style: const TextStyle(fontSize: 16),
                          )
                        ],
                      ),
                      const Spacer(),
                      const Icon(
                        Icons.arrow_forward_ios,
                        size: 12,
                        color: Colors.grey,
                      )
                    ]));
              }).toList())),
          FilledButton(
              onPressed: () async {
                // final prefs = await SharedPreferences.getInstance();
                // prefs.setString('token', '12345678');
                TokenManager().saveToken('key token');
                ToastUtil.showInfo('存储数据成功');
              },
              child: const Text('存数据')),
          FilledButton(
              onPressed: () async {
                // final prefs = await SharedPreferences.getInstance();
                // prefs.getString('token');
                final res = TokenManager().getToken();
                ToastUtil.showInfo(res as String);
              },
              child: const Text('取数据')),
          FilledButton(
              onPressed: () async {
                // final prefs = await SharedPreferences.getInstance();
                // prefs.remove('token');
                TokenManager().removeToken();
                ToastUtil.showInfo('删除数据成功');
              },
              child: const Text('删数据')),
          ElevatedButton(
              onPressed: () {
                Navigator.pushNamed(context, '/profile');
              },
              child: const Text('用户信息页')),
          FilledButton(
            onPressed: () async {
              final res = await http.get('/userInfo');
              print(res);
            },
            child: const Text('测试需要带 token 的请求'),
          ),
          FilledButton(
            onPressed: () async {
              final ImagePicker picker = ImagePicker();
              // Pick an image.
              final XFile? image =
                  await picker.pickImage(source: ImageSource.gallery);
              print(image?.path);
            },
            child: const Text('测试访问相册'),
          ),
        ],
      ),
    );
  }
}
